home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / comm2 / termsorc.lha / Extras / Source / term-source.lha / LibPanel.c < prev    next >
C/C++ Source or Header  |  1995-09-26  |  29KB  |  1,149 lines

  1. /*
  2. **    LibPanel.c
  3. **
  4. **    Editing panel for transfer library configuration
  5. **
  6. **    Copyright © 1990-1995 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. */
  9.  
  10. #include "termGlobal.h"
  11.  
  12. enum    {    GAD_DEFAULT_TYPE=1000,
  13.         GAD_DEFAULT_NAME,
  14.         GAD_DEFAULT_SENDSIGNATURE,
  15.         GAD_DEFAULT_PREFS,
  16.  
  17.         GAD_ASCII_UPLOAD_TYPE,
  18.         GAD_ASCII_UPLOAD_NAME,
  19.         GAD_ASCII_UPLOAD_SIGNATURE,
  20.         GAD_ASCII_UPLOAD_PREFS,
  21.         GAD_ASCII_DOWNLOAD_TYPE,
  22.         GAD_ASCII_DOWNLOAD_NAME,
  23.         GAD_ASCII_DOWNLOAD_SIGNATURE,
  24.         GAD_ASCII_DOWNLOAD_PREFS,
  25.  
  26.         GAD_TEXT_UPLOAD_TYPE,
  27.         GAD_TEXT_UPLOAD_NAME,
  28.         GAD_TEXT_UPLOAD_SIGNATURE,
  29.         GAD_TEXT_UPLOAD_PREFS,
  30.         GAD_TEXT_DOWNLOAD_TYPE,
  31.         GAD_TEXT_DOWNLOAD_NAME,
  32.         GAD_TEXT_DOWNLOAD_SIGNATURE,
  33.         GAD_TEXT_DOWNLOAD_PREFS,
  34.  
  35.         GAD_BINARY_UPLOAD_TYPE,
  36.         GAD_BINARY_UPLOAD_NAME,
  37.         GAD_BINARY_UPLOAD_SIGNATURE,
  38.         GAD_BINARY_UPLOAD_PREFS,
  39.         GAD_BINARY_DOWNLOAD_TYPE,
  40.         GAD_BINARY_DOWNLOAD_NAME,
  41.         GAD_BINARY_DOWNLOAD_SIGNATURE,
  42.         GAD_BINARY_DOWNLOAD_PREFS,
  43.  
  44.         GAD_DEFAULT_RECEIVESIGNATURE,
  45.  
  46.         GAD_MANGLE,GAD_PAGE,GAD_PAGEGROUP,
  47.         GAD_NOTIFY_AFTER_N_ERRORS,GAD_NOTIFY_WHEN,
  48.         GAD_USE,GAD_CANCEL,GAD_DEFAULT,
  49.  
  50.         GAD_PROTOCOLTYPE,GAD_PAGER
  51.     };
  52.  
  53. BOOLEAN __regargs
  54. SignaturePanel(struct Window *Parent,STRPTR String,BOOLEAN ReceiveMode)
  55. {
  56.     STATIC STRPTR SendProtocols[] =
  57.     {
  58.         "Z-Modem",
  59.         NULL
  60.     };
  61.  
  62.     STATIC STRPTR SendSignatureTypes[] =
  63.     {
  64.         "*^XB01",
  65.         NULL
  66.     };
  67.  
  68.     STATIC STRPTR ReceiveProtocols[] =
  69.     {
  70.         "Z-Modem",
  71.         "Hydra",
  72.         "QuickB",
  73.         NULL
  74.     };
  75.  
  76.     STATIC STRPTR ReceiveSignatureTypes[] =
  77.     {
  78.         "*^XB00",
  79.         "^XcA\\\\f5\\\\a3^Xa",
  80.         "\\*ENQ",
  81.         NULL
  82.     };
  83.  
  84.     struct LayoutHandle    *Handle;
  85.     BOOLEAN             Ok = FALSE;
  86.     STRPTR            *SignatureTypes,
  87.                 *Protocols;
  88.  
  89.     if(ReceiveMode)
  90.     {
  91.         SignatureTypes    = ReceiveSignatureTypes;
  92.         Protocols    = ReceiveProtocols;
  93.     }
  94.     else
  95.     {
  96.         SignatureTypes    = SendSignatureTypes;
  97.         Protocols    = SendProtocols;
  98.     }
  99.  
  100.     if(Handle = LT_CreateHandleTags(Parent -> WScreen,
  101.         LH_LocaleHook,    &LocaleHook,
  102.     TAG_DONE))
  103.     {
  104.         struct Window    *PanelWindow;
  105.         BYTE         Index = 0;
  106.  
  107.         LT_New(Handle,
  108.             LA_Type,    VERTICAL_KIND,
  109.         TAG_DONE);
  110.         {
  111.             LT_New(Handle,
  112.                 LA_Type,    VERTICAL_KIND,
  113.             TAG_DONE);
  114.             {
  115.                 LT_New(Handle,
  116.                     LA_Type,    LISTVIEW_KIND,
  117.                     LA_LabelID,    MSG_XFER_SELECT_SIGNATURE_TXT,
  118.                     LALV_Labels,    Protocols,
  119.                     LALV_Link,    NIL_LINK,
  120.                     LALV_CursorKey,    TRUE,
  121.                     LALV_MaxGrowY,    5,
  122.                     LA_BYTE,    &Index,
  123.                     LA_ID,        GAD_PROTOCOLTYPE,
  124.                     LA_Chars,    30,
  125.                 TAG_DONE);
  126.  
  127.                 LT_EndGroup(Handle);
  128.             }
  129.  
  130.             LT_New(Handle,
  131.                 LA_Type,VERTICAL_KIND,
  132.             TAG_DONE);
  133.             {
  134.                 LT_New(Handle,
  135.                     LA_Type,    XBAR_KIND,
  136.                     LAXB_FullSize,    TRUE,
  137.                 TAG_DONE);
  138.  
  139.                 LT_EndGroup(Handle);
  140.             }
  141.  
  142.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  143.                 LAGR_SameSize,    TRUE,
  144.                 LAGR_Spread,    TRUE,
  145.             TAG_DONE);
  146.             {
  147.                 LT_New(Handle,
  148.                     LA_Type,    BUTTON_KIND,
  149.                     LA_LabelID,    MSG_GLOBAL_USE_GAD,
  150.                     LA_ID,        GAD_USE,
  151.                     LABT_ReturnKey,    TRUE,
  152.                     LABT_ExtraFat,    TRUE,
  153.                 TAG_DONE);
  154.  
  155.                 LT_New(Handle,
  156.                     LA_Type,    BUTTON_KIND,
  157.                     LA_LabelID,    MSG_GLOBAL_CANCEL_GAD,
  158.                     LA_ID,        GAD_CANCEL,
  159.                     LABT_EscKey,    TRUE,
  160.                     LABT_ExtraFat,    TRUE,
  161.                 TAG_DONE);
  162.  
  163.                 LT_EndGroup(Handle);
  164.             }
  165.  
  166.             LT_EndGroup(Handle);
  167.         }
  168.  
  169.         if(PanelWindow = LT_Build(Handle,
  170.             LAWN_TitleID,        MSG_XFER_SIGNATURE_TXT,
  171.             LAWN_IDCMP,        IDCMP_CLOSEWINDOW,
  172.             LAWN_HelpHook,        &GuideHook,
  173.             LAWN_Parent,        Window,
  174.             WA_DepthGadget,        TRUE,
  175.             WA_CloseGadget,        TRUE,
  176.             WA_DragBar,        TRUE,
  177.             WA_RMBTrap,        TRUE,
  178.             WA_Activate,        TRUE,
  179.             WA_SimpleRefresh,    TRUE,
  180.         TAG_DONE))
  181.         {
  182.             struct IntuiMessage    *Message;
  183.             BOOLEAN             Done = FALSE;
  184.             ULONG             MsgClass;
  185.             struct Gadget        *MsgGadget;
  186.  
  187.             GuideContext(CONTEXT_SIGNATURE);
  188.  
  189.             PushWindow(PanelWindow);
  190.  
  191.             LT_ShowWindow(Handle,TRUE);
  192.  
  193.             do
  194.             {
  195.                 if(Wait(PORTMASK(PanelWindow -> UserPort) | SIG_BREAK) & SIG_BREAK)
  196.                     break;
  197.  
  198.                 while(Message = (struct IntuiMessage *)LT_GetIMsg(Handle))
  199.                 {
  200.                     MsgClass    = Message -> Class;
  201.                     MsgGadget    = (struct Gadget *)Message -> IAddress;
  202.  
  203.                     LT_ReplyIMsg(Message);
  204.  
  205.                     if(MsgClass == IDCMP_CLOSEWINDOW)
  206.                         Done = TRUE;
  207.  
  208.                     if(MsgClass == IDCMP_GADGETUP)
  209.                     {
  210.                         switch(MsgGadget -> GadgetID)
  211.                         {
  212.                             case GAD_USE:
  213.  
  214.                                 strcpy(String,SignatureTypes[Index]);
  215.  
  216.                                 Ok = Done = TRUE;
  217.                                 break;
  218.  
  219.                             case GAD_CANCEL:
  220.  
  221.                                 Done = TRUE;
  222.                                 break;
  223.                         }
  224.                     }
  225.  
  226.                     if(MsgClass == IDCMP_IDCMPUPDATE)
  227.                     {
  228.                         strcpy(String,SignatureTypes[Index]);
  229.  
  230.                         Ok = Done = TRUE;
  231.  
  232.                         LT_PressButton(Handle,GAD_USE);
  233.                     }
  234.                 }
  235.             }
  236.             while(!Done);
  237.  
  238.             PopWindow();
  239.         }
  240.  
  241.         LT_DeleteHandle(Handle);
  242.     }
  243.  
  244.     return(Ok);
  245. }
  246.  
  247. BYTE __regargs
  248. LibPanel(struct Configuration *Config,BYTE *Default)
  249. {
  250.     STATIC LONG PageTitleID[6] =
  251.     {
  252.         MSG_XFER_GENERAL_OPTIONS_TXT,
  253.         MSG_XFER_PAGE1_TXT,
  254.         MSG_XFER_PAGE2_TXT,
  255.         MSG_XFER_PAGE3_TXT,
  256.         MSG_XFER_PAGE4_TXT,
  257.         -1
  258.     };
  259.  
  260.     STATIC BYTE         InitialPage = 0;
  261.  
  262.     struct LayoutHandle    *Handle;
  263.     BYTE             OpenIt = TRUE,
  264.                  Cancel = FALSE;
  265.     STRPTR             Signatures[TRANSFERSIG_BINARYDOWNLOAD + 1];
  266.     WORD             i;
  267.  
  268.     if(!(Signatures[0] = AllocVecPooled(40 * (TRANSFERSIG_BINARYDOWNLOAD + 1),MEMF_ANY)))
  269.         return(FALSE);
  270.  
  271.     SaveConfig(Config,PrivateConfig);
  272.  
  273.     for(i = 1 ; i <= TRANSFERSIG_BINARYDOWNLOAD ; i++)
  274.         Signatures[i] = Signatures[i - 1] + 40;
  275.  
  276.     for(i = 0 ; i <= TRANSFERSIG_BINARYDOWNLOAD ; i++)
  277.     {
  278.         if(Config -> TransferConfig -> Signatures[i] . Length)
  279.             TranslateBack(Config -> TransferConfig -> Signatures[i] . Signature,Config -> TransferConfig -> Signatures[i] . Length,Signatures[i]);
  280.         else
  281.             Signatures[i][0] = 0;
  282.     }
  283.  
  284.     if(Handle = LT_CreateHandleTags(Window -> WScreen,
  285.         LH_LocaleHook,    &LocaleHook,
  286.         LH_ExitFlush,    FALSE,
  287.     TAG_DONE))
  288.     {
  289.         struct Window *PanelWindow;
  290.  
  291.         LT_New(Handle,
  292.             LA_Type,    VERTICAL_KIND,
  293.         TAG_DONE);
  294.         {
  295.             LT_New(Handle,
  296.                 LA_Type,    VERTICAL_KIND,
  297.             TAG_DONE);
  298.             {
  299.                 LT_New(Handle,
  300.                     LA_Type,        TAB_KIND,
  301.                     LA_LabelID,        MSG_XFER_PAGE_TXT,
  302.                     LACY_LabelTable,    PageTitleID,
  303.                     LACY_AutoPageID,    GAD_PAGEGROUP,
  304.                     LACY_TabKey,        TRUE,
  305.                     LA_BYTE,        &InitialPage,
  306.                     LATB_FullWidth,        TRUE,
  307.                     LA_ID,            GAD_PAGER,
  308.                 TAG_DONE);
  309.  
  310.                 LT_EndGroup(Handle);
  311.             }
  312.  
  313.             LT_New(Handle,
  314.                 LA_Type,    VERTICAL_KIND,
  315.                 LA_ID,        GAD_PAGEGROUP,
  316.                 LAGR_ActivePage,InitialPage,
  317.             TAG_DONE);
  318.             {
  319.                 LT_New(Handle,
  320.                     LA_Type,    VERTICAL_KIND,
  321.                 TAG_DONE);
  322.                 {
  323.                     LT_New(Handle,
  324.                         LA_Type,    HORIZONTAL_KIND,
  325.                     TAG_DONE);
  326.                     {
  327.                         LT_New(Handle,
  328.                             LA_Type,    VERTICAL_KIND,
  329.                         TAG_DONE);
  330.                         {
  331.                             LT_New(Handle,
  332.                                 LA_Type,    CHECKBOX_KIND,
  333.                                 LA_LabelID,    MSG_MISCPANEL_OVERRIDE_TRANSFER_PATH_GAD,
  334.                                 LA_BYTE,    &Config -> TransferConfig -> OverridePath,
  335.                             TAG_DONE);
  336.  
  337.                             LT_New(Handle,
  338.                                 LA_Type,    CHECKBOX_KIND,
  339.                                 LA_LabelID,    MSG_MISCPANEL_SET_ARCHIVED_BIT_GAD,
  340.                                 LA_BYTE,    &Config -> TransferConfig -> SetArchivedBit,
  341.                             TAG_DONE);
  342.  
  343.                             LT_New(Handle,
  344.                                 LA_Type,    CHECKBOX_KIND,
  345.                                 LA_LabelID,    MSG_MISCPANEL_TRANSFER_ICONS_GAD,
  346.                                 LA_BYTE,    &Config -> TransferConfig -> TransferIcons,
  347.                             TAG_DONE);
  348.  
  349.                             LT_EndGroup(Handle);
  350.                         }
  351.  
  352.                         LT_New(Handle,
  353.                             LA_Type,    VERTICAL_KIND,
  354.                         TAG_DONE);
  355.                         {
  356.                             LT_New(Handle,
  357.                                 LA_Type,    CHECKBOX_KIND,
  358.                                 LA_LabelID,    MSG_MANGLE_UPLOAD_FILENAMES_TXT,
  359.                                 LA_BYTE,    &Config -> TransferConfig -> MangleFileNames,
  360.                                 LA_ID,        GAD_MANGLE,
  361.                             TAG_DONE);
  362.  
  363.                             LT_New(Handle,
  364.                                 LA_Type,    CHECKBOX_KIND,
  365.                                 LA_LabelID,    MSG_MISCPANEL_TRANSFER_METER_GAD,
  366.                                 LA_BYTE,    &Config -> TransferConfig -> PerfMeter,
  367.                             TAG_DONE);
  368.  
  369.                             LT_New(Handle,
  370.                                 LA_Type,    CHECKBOX_KIND,
  371.                                 LA_LabelID,    MSG_MISCPANEL_HIDE_UPLOAD_ICON_GAD,
  372.                                 LA_BYTE,    &Config -> TransferConfig -> HideUploadIcon,
  373.                             TAG_DONE);
  374.  
  375.                             LT_EndGroup(Handle);
  376.                         }
  377.  
  378.                         LT_EndGroup(Handle);
  379.                     }
  380.  
  381.                     LT_New(Handle,
  382.                         LA_Type,    VERTICAL_KIND,
  383.                     TAG_DONE);
  384.                     {
  385.                         LT_New(Handle,
  386.                             LA_Type,    XBAR_KIND,
  387.                         TAG_DONE);
  388.  
  389.                         LT_New(Handle,
  390.                             LA_Type,        INTEGER_KIND,
  391.                             LA_LabelID,        MSG_NOTIFY_USER_AFTER_N_ERRORS_HAVE_OCCURED_TXT,
  392.                             LA_UWORD,        &Config -> TransferConfig -> ErrorNotification,
  393.                             LA_ID,            GAD_NOTIFY_AFTER_N_ERRORS,
  394.                             LA_Chars,        8,
  395.                             LAIN_Min,        0,
  396.                             LAIN_Max,        65535,
  397.                             LAIN_UseIncrementers,    TRUE,
  398.                         TAG_DONE);
  399.  
  400.                         LT_EndGroup(Handle);
  401.                     }
  402.  
  403.                     LT_New(Handle,
  404.                         LA_Type,    VERTICAL_KIND,
  405.                     TAG_DONE);
  406.                     {
  407.                         LT_New(Handle,
  408.                             LA_Type,        CYCLE_KIND,
  409.                             LA_LabelID,        MSG_NOTIFY_USER_TXT,
  410.                             LA_BYTE,        &Config -> TransferConfig -> TransferNotification,
  411.                             LA_ID,            GAD_NOTIFY_WHEN,
  412.                             LACY_FirstLabel,    MSG_NOTIFY_USER_MODE1_TXT,
  413.                             LACY_LastLabel,        MSG_NOTIFY_USER_MODE4_TXT,
  414.                         TAG_DONE);
  415.  
  416.                         LT_New(Handle,
  417.                             LA_Type,        CYCLE_KIND,
  418.                             LA_LabelID,        MSG_MISCPANEL_IDENTIFY_FILES_GAD,
  419.                             LACY_FirstLabel,    MSG_MISCPANEL_IDENTIFY_IGNORE_TXT,
  420.                             LACY_LastLabel,        MSG_MISCPANEL_IDENTIFY_SOURCE_TXT,
  421.                             LA_BYTE,        &Config -> TransferConfig -> IdentifyFiles,
  422.                         TAG_DONE);
  423.  
  424.                         LT_EndGroup(Handle);
  425.                     }
  426.  
  427.                     LT_EndGroup(Handle);
  428.                 }
  429.  
  430.                 LT_New(Handle,
  431.                     LA_Type,    VERTICAL_KIND,
  432.                 TAG_DONE);
  433.                 {
  434.                     LT_New(Handle,
  435.                         LA_Type,    CYCLE_KIND,
  436.                         LA_ID,        GAD_DEFAULT_TYPE,
  437.                         LA_BYTE,    &Config -> TransferConfig -> DefaultType,
  438.                         LA_LabelID,    MSG_XFER_TYPE_TXT,
  439.                         LACY_FirstLabel,MSG_XFER_TYPE1_TXT,
  440.                         LACY_LastLabel,    MSG_XFER_TYPE2_TXT,
  441.                         LA_Chars,    40,
  442.                     TAG_DONE);
  443.  
  444.                     LT_New(Handle,
  445.                         LA_Type,    STRING_KIND,
  446.                         LA_ID,        GAD_DEFAULT_NAME,
  447.                         LA_LabelID,    MSG_XFER_NAME_TXT,
  448.                         LA_STRPTR,    Config -> TransferConfig -> DefaultLibrary,
  449.                         GTST_MaxChars,    MAX_FILENAME_LENGTH,
  450.                         LAST_Picker,    TRUE,
  451.                     TAG_DONE);
  452.  
  453.                     LT_New(Handle,
  454.                         LA_Type,    STRING_KIND,
  455.                         LA_ID,        GAD_DEFAULT_SENDSIGNATURE,
  456.                         LA_LabelID,    MSG_XFER_SEND_SIGNATURE_TXT,
  457.                         LA_STRPTR,    Signatures[TRANSFERSIG_DEFAULTUPLOAD],
  458.                         GTST_MaxChars,    40,
  459.                         LAST_Picker,    TRUE,
  460.                     TAG_DONE);
  461.  
  462.                     LT_New(Handle,
  463.                         LA_Type,    STRING_KIND,
  464.                         LA_ID,        GAD_DEFAULT_RECEIVESIGNATURE,
  465.                         LA_LabelID,    MSG_XFER_RECEIVE_SIGNATURE_TXT,
  466.                         LA_STRPTR,    Signatures[TRANSFERSIG_DEFAULTDOWNLOAD],
  467.                         GTST_MaxChars,    40,
  468.                         LAST_Picker,    TRUE,
  469.                     TAG_DONE);
  470.  
  471.                     LT_New(Handle,
  472.                         LA_Type,    BUTTON_KIND,
  473.                         LA_LabelID,    MSG_XFER_SETTINGS_TXT,
  474.                         LA_ID,        GAD_DEFAULT_PREFS,
  475.                     TAG_DONE);
  476.  
  477.                     LT_EndGroup(Handle);
  478.                 }
  479.  
  480.                 LT_New(Handle,
  481.                     LA_Type,    VERTICAL_KIND,
  482.                 TAG_DONE);
  483.                 {
  484.                     LT_New(Handle,
  485.                         LA_Type,    CYCLE_KIND,
  486.                         LA_ID,        GAD_ASCII_UPLOAD_TYPE,
  487.                         LA_BYTE,    &Config -> TransferConfig -> ASCIIUploadType,
  488.                         LA_LabelID,    MSG_XFER_TYPE_TXT,
  489.                         LACY_FirstLabel,MSG_XFER_TYPE1_TXT,
  490.                         LACY_LastLabel,    MSG_XFER_TYPE4_TXT,
  491.                         LA_Chars,    40,
  492.                     TAG_DONE);
  493.  
  494.                     LT_New(Handle,
  495.                         LA_Type,    STRING_KIND,
  496.                         LA_ID,        GAD_ASCII_UPLOAD_NAME,
  497.                         LA_LabelID,    MSG_XFER_SEND_TXT,
  498.                         LA_STRPTR,    Config -> TransferConfig -> ASCIIUploadLibrary,
  499.                         GTST_MaxChars,    MAX_FILENAME_LENGTH,
  500.                         LAST_Picker,    TRUE,
  501.                         GA_Disabled,    Config -> TransferConfig -> ASCIIUploadType == XFER_DEFAULT || Config -> TransferConfig -> ASCIIUploadType == XFER_INTERNAL,
  502.                     TAG_DONE);
  503.  
  504.                     LT_New(Handle,
  505.                         LA_Type,    STRING_KIND,
  506.                         LA_ID,        GAD_ASCII_UPLOAD_SIGNATURE,
  507.                         LA_LabelID,    MSG_XFER_SIGNATURE_TXT,
  508.                         LA_STRPTR,    Signatures[TRANSFERSIG_ASCIIUPLOAD],
  509.                         GTST_MaxChars,    40,
  510.                         LAST_Picker,    TRUE,
  511.                         GA_Disabled,    Config -> TransferConfig -> ASCIIUploadType == XFER_DEFAULT || Config -> TransferConfig -> ASCIIUploadType == XFER_INTERNAL,
  512.                     TAG_DONE);
  513.  
  514.                     LT_New(Handle,
  515.                         LA_Type,    BUTTON_KIND,
  516.                         LA_LabelID,    MSG_XFER_SETTINGS_TXT,
  517.                         LA_ID,        GAD_ASCII_UPLOAD_PREFS,
  518.                         GA_Disabled,    Config -> TransferConfig -> ASCIIUploadType == XFER_DEFAULT || Config -> TransferConfig -> ASCIIUploadType == XFER_EXTERNALPROGRAM,
  519.                     TAG_DONE);
  520.  
  521.                     LT_New(Handle,
  522.                         LA_Type,    XBAR_KIND,
  523.                     TAG_DONE);
  524.  
  525.                     LT_New(Handle,
  526.                         LA_Type,    CYCLE_KIND,
  527.                         LA_ID,        GAD_ASCII_DOWNLOAD_TYPE,
  528.                         LA_BYTE,    &Config -> TransferConfig -> ASCIIDownloadType,
  529.                         LA_LabelID,    MSG_XFER_TYPE_TXT,
  530.                         LACY_FirstLabel,MSG_XFER_TYPE1_TXT,
  531.                         LACY_LastLabel,    MSG_XFER_TYPE4_TXT,
  532.                     TAG_DONE);
  533.  
  534.                     LT_New(Handle,
  535.                         LA_Type,    STRING_KIND,
  536.                         LA_ID,        GAD_ASCII_DOWNLOAD_NAME,
  537.                         LA_LabelID,    MSG_XFER_RECEIVE_TXT,
  538.                         LA_STRPTR,    Config -> TransferConfig -> ASCIIDownloadLibrary,
  539.                         GTST_MaxChars,    MAX_FILENAME_LENGTH,
  540.                         LAST_Picker,    TRUE,
  541.                         GA_Disabled,    Config -> TransferConfig -> ASCIIDownloadType == XFER_DEFAULT || Config -> TransferConfig -> ASCIIDownloadType == XFER_INTERNAL,
  542.                     TAG_DONE);
  543.  
  544.                     LT_New(Handle,
  545.                         LA_Type,    STRING_KIND,
  546.                         LA_ID,        GAD_ASCII_DOWNLOAD_SIGNATURE,
  547.                         LA_LabelID,    MSG_XFER_SIGNATURE_TXT,
  548.                         LA_STRPTR,    Signatures[TRANSFERSIG_ASCIIDOWNLOAD],
  549.                         GTST_MaxChars,    40,
  550.                         LAST_Picker,    TRUE,
  551.                         GA_Disabled,    Config -> TransferConfig -> ASCIIDownloadType == XFER_DEFAULT || Config -> TransferConfig -> ASCIIDownloadType == XFER_INTERNAL,
  552.                     TAG_DONE);
  553.  
  554.                     LT_New(Handle,
  555.                         LA_Type,    BUTTON_KIND,
  556.                         LA_LabelID,    MSG_XFER_SETTINGS_TXT,
  557.                         LA_ID,        GAD_ASCII_DOWNLOAD_PREFS,
  558.                         GA_Disabled,    Config -> TransferConfig -> ASCIIDownloadType == XFER_DEFAULT || Config -> TransferConfig -> ASCIIDownloadType == XFER_EXTERNALPROGRAM,
  559.                     TAG_DONE);
  560.  
  561.                     LT_EndGroup(Handle);
  562.                 }
  563.  
  564.                 LT_New(Handle,
  565.                     LA_Type,    VERTICAL_KIND,
  566.                 TAG_DONE);
  567.                 {
  568.                     LT_New(Handle,
  569.                         LA_Type,    CYCLE_KIND,
  570.                         LA_ID,        GAD_TEXT_UPLOAD_TYPE,
  571.                         LA_BYTE,    &Config -> TransferConfig -> TextUploadType,
  572.                         LA_LabelID,    MSG_XFER_TYPE_TXT,
  573.                         LACY_FirstLabel,MSG_XFER_TYPE1_TXT,
  574.                         LACY_LastLabel,    MSG_XFER_TYPE3_TXT,
  575.                         LA_Chars,    40,
  576.                     TAG_DONE);
  577.  
  578.                     LT_New(Handle,
  579.                         LA_Type,    STRING_KIND,
  580.                         LA_ID,        GAD_TEXT_UPLOAD_NAME,
  581.                         LA_LabelID,    MSG_XFER_SEND_TXT,
  582.                         LA_STRPTR,    Config -> TransferConfig -> TextUploadLibrary,
  583.                         GTST_MaxChars,    MAX_FILENAME_LENGTH,
  584.                         LAST_Picker,    TRUE,
  585.                         GA_Disabled,    Config -> TransferConfig -> TextUploadType == XFER_DEFAULT,
  586.                     TAG_DONE);
  587.  
  588.                     LT_New(Handle,
  589.                         LA_Type,    STRING_KIND,
  590.                         LA_ID,        GAD_TEXT_UPLOAD_SIGNATURE,
  591.                         LA_LabelID,    MSG_XFER_SIGNATURE_TXT,
  592.                         LA_STRPTR,    Signatures[TRANSFERSIG_TEXTUPLOAD],
  593.                         GTST_MaxChars,    40,
  594.                         LAST_Picker,    TRUE,
  595.                         GA_Disabled,    Config -> TransferConfig -> TextUploadType == XFER_DEFAULT,
  596.                     TAG_DONE);
  597.  
  598.                     LT_New(Handle,
  599.                         LA_Type,    BUTTON_KIND,
  600.                         LA_LabelID,    MSG_XFER_SETTINGS_TXT,
  601.                         LA_ID,        GAD_TEXT_UPLOAD_PREFS,
  602.                         GA_Disabled,    Config -> TransferConfig -> TextUploadType == XFER_DEFAULT || Config -> TransferConfig -> TextUploadType == XFER_EXTERNALPROGRAM,
  603.                     TAG_DONE);
  604.  
  605.                     LT_New(Handle,
  606.                         LA_Type,    XBAR_KIND,
  607.                     TAG_DONE);
  608.  
  609.                     LT_New(Handle,
  610.                         LA_Type,    CYCLE_KIND,
  611.                         LA_ID,        GAD_TEXT_DOWNLOAD_TYPE,
  612.                         LA_BYTE,    &Config -> TransferConfig -> TextDownloadType,
  613.                         LA_LabelID,    MSG_XFER_TYPE_TXT,
  614.                         LACY_FirstLabel,MSG_XFER_TYPE1_TXT,
  615.                         LACY_LastLabel,    MSG_XFER_TYPE3_TXT,
  616.                     TAG_DONE);
  617.  
  618.                     LT_New(Handle,
  619.                         LA_Type,    STRING_KIND,
  620.                         LA_ID,        GAD_TEXT_DOWNLOAD_NAME,
  621.                         LA_LabelID,    MSG_XFER_RECEIVE_TXT,
  622.                         LA_STRPTR,    Config -> TransferConfig -> TextDownloadLibrary,
  623.                         GTST_MaxChars,    MAX_FILENAME_LENGTH,
  624.                         LAST_Picker,    TRUE,
  625.                         GA_Disabled,    Config -> TransferConfig -> TextDownloadType == XFER_DEFAULT,
  626.                     TAG_DONE);
  627.  
  628.                     LT_New(Handle,
  629.                         LA_Type,    STRING_KIND,
  630.                         LA_ID,        GAD_TEXT_DOWNLOAD_SIGNATURE,
  631.                         LA_LabelID,    MSG_XFER_SIGNATURE_TXT,
  632.                         LA_STRPTR,    Signatures[TRANSFERSIG_TEXTDOWNLOAD],
  633.                         GTST_MaxChars,    40,
  634.                         LAST_Picker,    TRUE,
  635.                         GA_Disabled,    Config -> TransferConfig -> TextDownloadType == XFER_DEFAULT,
  636.                     TAG_DONE);
  637.  
  638.                     LT_New(Handle,
  639.                         LA_Type,    BUTTON_KIND,
  640.                         LA_LabelID,    MSG_XFER_SETTINGS_TXT,
  641.                         LA_ID,        GAD_TEXT_DOWNLOAD_PREFS,
  642.                         GA_Disabled,    Config -> TransferConfig -> TextDownloadType == XFER_DEFAULT || Config -> TransferConfig -> TextDownloadType == XFER_EXTERNALPROGRAM,
  643.                     TAG_DONE);
  644.  
  645.                     LT_EndGroup(Handle);
  646.                 }
  647.  
  648.                 LT_New(Handle,
  649.                     LA_Type,    VERTICAL_KIND,
  650.                 TAG_DONE);
  651.                 {
  652.                     LT_New(Handle,
  653.                         LA_Type,    CYCLE_KIND,
  654.                         LA_ID,        GAD_BINARY_UPLOAD_TYPE,
  655.                         LA_BYTE,    &Config -> TransferConfig -> BinaryUploadType,
  656.                         LA_LabelID,    MSG_XFER_TYPE_TXT,
  657.                         LACY_FirstLabel,MSG_XFER_TYPE1_TXT,
  658.                         LACY_LastLabel,    MSG_XFER_TYPE3_TXT,
  659.                         LA_Chars,    40,
  660.                     TAG_DONE);
  661.  
  662.                     LT_New(Handle,
  663.                         LA_Type,    STRING_KIND,
  664.                         LA_ID,        GAD_BINARY_UPLOAD_NAME,
  665.                         LA_LabelID,    MSG_XFER_SEND_TXT,
  666.                         LA_STRPTR,    Config -> TransferConfig -> BinaryUploadLibrary,
  667.                         GTST_MaxChars,    MAX_FILENAME_LENGTH,
  668.                         LAST_Picker,    TRUE,
  669.                         GA_Disabled,    Config -> TransferConfig -> BinaryUploadType == XFER_DEFAULT,
  670.                     TAG_DONE);
  671.  
  672.                     LT_New(Handle,
  673.                         LA_Type,    STRING_KIND,
  674.                         LA_ID,        GAD_BINARY_UPLOAD_SIGNATURE,
  675.                         LA_LabelID,    MSG_XFER_SIGNATURE_TXT,
  676.                         LA_STRPTR,    Signatures[TRANSFERSIG_BINARYUPLOAD],
  677.                         GTST_MaxChars,    40,
  678.                         LAST_Picker,    TRUE,
  679.                         GA_Disabled,    Config -> TransferConfig -> BinaryUploadType == XFER_DEFAULT,
  680.                     TAG_DONE);
  681.  
  682.                     LT_New(Handle,
  683.                         LA_Type,    BUTTON_KIND,
  684.                         LA_LabelID,    MSG_XFER_SETTINGS_TXT,
  685.                         LA_ID,        GAD_BINARY_UPLOAD_PREFS,
  686.                         GA_Disabled,    Config -> TransferConfig -> BinaryUploadType == XFER_DEFAULT || Config -> TransferConfig -> BinaryUploadType == XFER_EXTERNALPROGRAM,
  687.                     TAG_DONE);
  688.  
  689.                     LT_New(Handle,
  690.                         LA_Type,    XBAR_KIND,
  691.                     TAG_DONE);
  692.  
  693.                     LT_New(Handle,
  694.                         LA_Type,    CYCLE_KIND,
  695.                         LA_ID,        GAD_BINARY_DOWNLOAD_TYPE,
  696.                         LA_BYTE,    &Config -> TransferConfig -> BinaryDownloadType,
  697.                         LA_LabelID,    MSG_XFER_TYPE_TXT,
  698.                         LACY_FirstLabel,MSG_XFER_TYPE1_TXT,
  699.                         LACY_LastLabel,    MSG_XFER_TYPE3_TXT,
  700.                     TAG_DONE);
  701.  
  702.                     LT_New(Handle,
  703.                         LA_Type,    STRING_KIND,
  704.                         LA_ID,        GAD_BINARY_DOWNLOAD_NAME,
  705.                         LA_LabelID,    MSG_XFER_RECEIVE_TXT,
  706.                         LA_STRPTR,    Config -> TransferConfig -> BinaryDownloadLibrary,
  707.                         GTST_MaxChars,    MAX_FILENAME_LENGTH,
  708.                         LAST_Picker,    TRUE,
  709.                         GA_Disabled,    Config -> TransferConfig -> BinaryDownloadType == XFER_DEFAULT,
  710.                     TAG_DONE);
  711.  
  712.                     LT_New(Handle,
  713.                         LA_Type,    STRING_KIND,
  714.                         LA_ID,        GAD_BINARY_DOWNLOAD_SIGNATURE,
  715.                         LA_LabelID,    MSG_XFER_SIGNATURE_TXT,
  716.                         LA_STRPTR,    Signatures[TRANSFERSIG_BINARYDOWNLOAD],
  717.                         GTST_MaxChars,    40,
  718.                         LAST_Picker,    TRUE,
  719.                         GA_Disabled,    Config -> TransferConfig -> BinaryDownloadType == XFER_DEFAULT,
  720.                     TAG_DONE);
  721.  
  722.                     LT_New(Handle,
  723.                         LA_Type,    BUTTON_KIND,
  724.                         LA_LabelID,    MSG_XFER_SETTINGS_TXT,
  725.                         LA_ID,        GAD_BINARY_DOWNLOAD_PREFS,
  726.                         GA_Disabled,    Config -> TransferConfig -> BinaryDownloadType == XFER_DEFAULT || Config -> TransferConfig -> BinaryDownloadType == XFER_EXTERNALPROGRAM,
  727.                     TAG_DONE);
  728.  
  729.                     LT_EndGroup(Handle);
  730.                 }
  731.  
  732.                 LT_EndGroup(Handle);
  733.             }
  734.  
  735.             LT_New(Handle,
  736.                 LA_Type,VERTICAL_KIND,
  737.             TAG_DONE);
  738.             {
  739.                 LT_New(Handle,
  740.                     LA_Type,    XBAR_KIND,
  741.                     LAXB_FullSize,    TRUE,
  742.                 TAG_DONE);
  743.  
  744.                 LT_EndGroup(Handle);
  745.             }
  746.  
  747.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  748.                 LAGR_SameSize,    TRUE,
  749.                 LAGR_Spread,    TRUE,
  750.             TAG_DONE);
  751.             {
  752.                 LT_New(Handle,
  753.                     LA_Type,    BUTTON_KIND,
  754.                     LA_LabelID,    MSG_GLOBAL_USE_GAD,
  755.                     LA_ID,        GAD_USE,
  756.                     LABT_ReturnKey,    TRUE,
  757.                     LABT_ExtraFat,    TRUE,
  758.                 TAG_DONE);
  759.  
  760.                 if(Default)
  761.                 {
  762.                     LT_New(Handle,
  763.                         LA_Type,    BUTTON_KIND,
  764.                         LA_LabelID,    MSG_GLOBAL_DEFAULT_GAD,
  765.                         LA_ID,        GAD_DEFAULT,
  766.                         LABT_ExtraFat,    TRUE,
  767.                     TAG_DONE);
  768.                 }
  769.  
  770.                 LT_New(Handle,
  771.                     LA_Type,    BUTTON_KIND,
  772.                     LA_LabelID,    MSG_GLOBAL_CANCEL_GAD,
  773.                     LA_ID,        GAD_CANCEL,
  774.                     LABT_EscKey,    TRUE,
  775.                     LABT_ExtraFat,    TRUE,
  776.                 TAG_DONE);
  777.  
  778.                 LT_EndGroup(Handle);
  779.             }
  780.  
  781.             LT_EndGroup(Handle);
  782.         }
  783.  
  784.         if(PanelWindow = LT_Build(Handle,
  785.             LAWN_TitleID,        MSG_LIBPANEL_LIBRARY_PREFERENCES_TXT,
  786.             LAWN_IDCMP,        IDCMP_CLOSEWINDOW,
  787.             LAWN_HelpHook,        &GuideHook,
  788.             LAWN_Parent,        Window,
  789.             WA_DepthGadget,        TRUE,
  790.             WA_CloseGadget,        TRUE,
  791.             WA_DragBar,        TRUE,
  792.             WA_RMBTrap,        TRUE,
  793.             WA_Activate,        TRUE,
  794.             WA_SimpleRefresh,    TRUE,
  795.         TAG_DONE))
  796.         {
  797.             struct IntuiMessage    *Message;
  798.             BOOLEAN             Done = FALSE;
  799.             ULONG             MsgClass;
  800.             struct Gadget        *MsgGadget;
  801.             UWORD             MsgCode;
  802.             WORD             Type;
  803.             STRPTR             Contents;
  804.  
  805.             GuideContext(CONTEXT_LIBS);
  806.  
  807.             PushWindow(PanelWindow);
  808.  
  809.             LT_ShowWindow(Handle,TRUE);
  810.  
  811.             do
  812.             {
  813.                 if(Wait(PORTMASK(PanelWindow -> UserPort) | SIG_BREAK) & SIG_BREAK)
  814.                 {
  815.                     SaveConfig(PrivateConfig,Config);
  816.  
  817.                     Cancel = TRUE;
  818.  
  819.                     break;
  820.                 }
  821.  
  822.                 while(Message = (struct IntuiMessage *)LT_GetIMsg(Handle))
  823.                 {
  824.                     MsgClass    = Message -> Class;
  825.                     MsgCode        = Message -> Code;
  826.                     MsgGadget    = (struct Gadget *)Message -> IAddress;
  827.  
  828.                     LT_ReplyIMsg(Message);
  829.  
  830.                     if(MsgClass == IDCMP_CLOSEWINDOW)
  831.                     {
  832.                         SaveConfig(PrivateConfig,Config);
  833.  
  834.                         Cancel = Done = TRUE;
  835.                     }
  836.  
  837.                     if(MsgClass == IDCMP_GADGETUP)
  838.                     {
  839.                         switch(MsgGadget -> GadgetID)
  840.                         {
  841.                             case GAD_USE:
  842.  
  843.                                 LT_UpdateStrings(Handle);
  844.  
  845.                                 for(i = 0 ; i <= TRANSFERSIG_BINARYDOWNLOAD ; i++)
  846.                                     Config -> TransferConfig -> Signatures[i] . Length = TranslateString(Signatures[i],Config -> TransferConfig -> Signatures[i] . Signature);
  847.  
  848.                                 Done = TRUE;
  849.                                 break;
  850.  
  851.                             case GAD_CANCEL:
  852.  
  853.                                 SaveConfig(PrivateConfig,Config);
  854.  
  855.                                 Cancel = Done = TRUE;
  856.  
  857.                                 OpenIt = FALSE;
  858.  
  859.                                 break;
  860.  
  861.                             case GAD_DEFAULT:
  862.  
  863.                                 *Default = TRUE;
  864.  
  865.                                 Done = TRUE;
  866.  
  867.                                 OpenIt = FALSE;
  868.  
  869.                                 break;
  870.  
  871.                             case GAD_DEFAULT_NAME:
  872.                             case GAD_ASCII_UPLOAD_NAME:
  873.                             case GAD_ASCII_DOWNLOAD_NAME:
  874.                             case GAD_TEXT_UPLOAD_NAME:
  875.                             case GAD_TEXT_DOWNLOAD_NAME:
  876.                             case GAD_BINARY_UPLOAD_NAME:
  877.                             case GAD_BINARY_DOWNLOAD_NAME:
  878.  
  879.                                 switch(LT_GetAttributes(Handle,MsgGadget -> GadgetID - 1,TAG_DONE))
  880.                                 {
  881.                                     case XFER_XPR:
  882.  
  883.                                         FindLibDev(PanelWindow,LT_GetString(Handle,MsgGadget -> GadgetID),NT_LIBRARY,NULL);
  884.  
  885.                                         break;
  886.  
  887.                                     case XFER_EXTERNALPROGRAM:
  888.  
  889.                                         FindProgram(PanelWindow,LT_GetString(Handle,MsgGadget -> GadgetID),NULL);
  890.  
  891.                                         break;
  892.                                 }
  893.  
  894.                                 break;
  895.  
  896.                             case GAD_DEFAULT_TYPE:
  897.                             case GAD_ASCII_UPLOAD_TYPE:
  898.                             case GAD_ASCII_DOWNLOAD_TYPE:
  899.                             case GAD_TEXT_UPLOAD_TYPE:
  900.                             case GAD_TEXT_DOWNLOAD_TYPE:
  901.                             case GAD_BINARY_UPLOAD_TYPE:
  902.                             case GAD_BINARY_DOWNLOAD_TYPE:
  903.  
  904.                                 LT_SetAttributes(Handle,MsgGadget -> GadgetID + 1,
  905.                                     GA_Disabled,    MsgCode == XFER_DEFAULT || MsgCode == XFER_INTERNAL,
  906.                                 TAG_DONE);
  907.  
  908.                                 LT_SetAttributes(Handle,MsgGadget -> GadgetID + 2,
  909.                                     GA_Disabled,    MsgCode == XFER_DEFAULT || MsgCode == XFER_INTERNAL,
  910.                                 TAG_DONE);
  911.  
  912.                                 LT_SetAttributes(Handle,MsgGadget -> GadgetID + 3,
  913.                                     GA_Disabled,    MsgCode == XFER_DEFAULT || MsgCode == XFER_EXTERNALPROGRAM,
  914.                                 TAG_DONE);
  915.  
  916.                                 break;
  917.  
  918.                             case GAD_DEFAULT_PREFS:
  919.                             case GAD_ASCII_UPLOAD_PREFS:
  920.                             case GAD_ASCII_DOWNLOAD_PREFS:
  921.                             case GAD_TEXT_UPLOAD_PREFS:
  922.                             case GAD_TEXT_DOWNLOAD_PREFS:
  923.                             case GAD_BINARY_UPLOAD_PREFS:
  924.                             case GAD_BINARY_DOWNLOAD_PREFS:
  925.  
  926.                                 Type        = LT_GetAttributes(Handle,MsgGadget -> GadgetID - 3,TAG_DONE);
  927.                                 Contents    = LT_GetString(Handle,MsgGadget -> GadgetID - 2);
  928.  
  929.                                 if(Type == XFER_XPR)
  930.                                 {
  931.                                     if(Contents[0])
  932.                                     {
  933.                                         LT_LockWindow(PanelWindow);
  934.  
  935.                                         if(ChangeProtocol(Contents,Type))
  936.                                         {
  937.                                             if(XProtocolBase)
  938.                                             {
  939.                                                 XprIO -> xpr_filename = NULL;
  940.  
  941.                                                 XPRCommandSelected = FALSE;
  942.  
  943. //                                                ClearSerial();
  944.  
  945.                                                 NewOptions = FALSE;
  946.  
  947.                                                 TransferBits = XProtocolSetup(XprIO);
  948.  
  949. //                                                RestartSerial(FALSE);
  950.  
  951.                                                 DeleteTransferPanel(TRUE);
  952.  
  953.                                                     /* Successful? */
  954.  
  955.                                                 if(!(TransferBits & XPRS_SUCCESS))
  956.                                                 {
  957.                                                     MyEasyRequest(PanelWindow,LocaleString(MSG_GLOBAL_FAILED_TO_SET_UP_PROTOCOL_TXT),LocaleString(MSG_GLOBAL_CONTINUE_TXT),LastXprLibrary);
  958.  
  959.                                                     CloseLibrary(XProtocolBase);
  960.  
  961.                                                     XProtocolBase = NULL;
  962.  
  963.                                                     LastXprLibrary[0] = 0;
  964.  
  965.                                                     TransferBits = 0;
  966.  
  967.                                                     SetTransferMenu(TRUE);
  968.                                                 }
  969.                                                 else
  970.                                                     SaveProtocolOpts();
  971.                                             }
  972.                                         }
  973.  
  974.                                         ResetProtocol();
  975.  
  976.                                         LT_UnlockWindow(PanelWindow);
  977.                                     }
  978.                                 }
  979.  
  980.                                 if(Type == XFER_INTERNAL)
  981.                                 {
  982.                                     LT_LockWindow(PanelWindow);
  983.  
  984.                                     ASCIITransferPanel(PanelWindow,Config);
  985.  
  986.                                     LT_UnlockWindow(PanelWindow);
  987.  
  988.                                     LT_ShowWindow(Handle,TRUE);
  989.                                 }
  990.  
  991.                                 break;
  992.                         }
  993.                     }
  994.  
  995.                     if(MsgClass == IDCMP_IDCMPUPDATE)
  996.                     {
  997.                         switch(MsgGadget -> GadgetID)
  998.                         {
  999.                             case GAD_DEFAULT_SENDSIGNATURE:
  1000.                             case GAD_ASCII_UPLOAD_SIGNATURE:
  1001.                             case GAD_TEXT_UPLOAD_SIGNATURE:
  1002.                             case GAD_BINARY_UPLOAD_SIGNATURE:
  1003.  
  1004.                                 LT_LockWindow(PanelWindow);
  1005.  
  1006.                                 if(SignaturePanel(PanelWindow,SharedBuffer,FALSE))
  1007.                                     LT_SetAttributes(Handle,MsgGadget -> GadgetID,GTST_String,SharedBuffer,TAG_DONE);
  1008.  
  1009.                                 LT_UnlockWindow(PanelWindow);
  1010.  
  1011.                                 LT_ShowWindow(Handle,TRUE);
  1012.                                 break;
  1013.  
  1014.                             case GAD_DEFAULT_RECEIVESIGNATURE:
  1015.                             case GAD_ASCII_DOWNLOAD_SIGNATURE:
  1016.                             case GAD_TEXT_DOWNLOAD_SIGNATURE:
  1017.                             case GAD_BINARY_DOWNLOAD_SIGNATURE:
  1018.  
  1019.                                 LT_LockWindow(PanelWindow);
  1020.  
  1021.                                 if(SignaturePanel(PanelWindow,SharedBuffer,TRUE))
  1022.                                     LT_SetAttributes(Handle,MsgGadget -> GadgetID,GTST_String,SharedBuffer,TAG_DONE);
  1023.  
  1024.                                 LT_UnlockWindow(PanelWindow);
  1025.  
  1026.                                 LT_ShowWindow(Handle,TRUE);
  1027.                                 break;
  1028.  
  1029.                             default:
  1030.  
  1031.                                 Type = LT_GetAttributes(Handle,MsgGadget -> GadgetID - 1,TAG_DONE);
  1032.  
  1033.                                 if(Type == XFER_XPR)
  1034.                                 {
  1035.                                     LT_LockWindow(PanelWindow);
  1036.  
  1037.                                     strcpy(SharedBuffer,(STRPTR)LT_GetAttributes(Handle,MsgGadget -> GadgetID,TAG_DONE));
  1038.  
  1039.                                     if(PickFile(PanelWindow,"Libs:","xpr#?.library",LocaleString(MSG_LIBPANEL_SELECT_DEFAULT_TRANSFER_LIBRARY_TXT + (MsgGadget -> GadgetID - GAD_DEFAULT_TYPE) / 4),SharedBuffer,NT_LIBRARY))
  1040.                                     {
  1041.                                         FindLibDev(PanelWindow,SharedBuffer,NT_LIBRARY,NULL);
  1042.  
  1043.                                         LT_SetAttributes(Handle,MsgGadget -> GadgetID,GTST_String,SharedBuffer,TAG_DONE);
  1044.                                     }
  1045.  
  1046.                                     LT_UnlockWindow(PanelWindow);
  1047.  
  1048.                                     LT_ShowWindow(Handle,TRUE);
  1049.                                 }
  1050.  
  1051.                                 if(Type == XFER_EXTERNALPROGRAM)
  1052.                                 {
  1053.                                     LT_LockWindow(PanelWindow);
  1054.  
  1055.                                     Contents = LT_GetString(Handle,MsgGadget -> GadgetID);
  1056.  
  1057.                                     if(ExternalCommandPanel(PanelWindow,Contents))
  1058.                                     {
  1059.                                         FindProgram(PanelWindow,Contents,NULL);
  1060.  
  1061.                                         LT_SetAttributes(Handle,MsgGadget -> GadgetID,GTST_String,Contents,TAG_DONE);
  1062.                                     }
  1063.  
  1064.                                     LT_UnlockWindow(PanelWindow);
  1065.  
  1066.                                     LT_ShowWindow(Handle,TRUE);
  1067.                                 }
  1068.  
  1069.                                 break;
  1070.                         }
  1071.                     }
  1072.                 }
  1073.             }
  1074.             while(!Done);
  1075.  
  1076.             PopWindow();
  1077.         }
  1078.  
  1079.         LT_DeleteHandle(Handle);
  1080.     }
  1081.  
  1082.     FreeVecPooled(Signatures[0]);
  1083.  
  1084.     if(Default)
  1085.         return((BYTE)(!Cancel));
  1086.     else
  1087.     {
  1088.         if(Cancel)
  1089.             return(FALSE);
  1090.  
  1091.         if(Config -> PathConfig && Config -> TransferConfig && Config -> MiscConfig)
  1092.         {
  1093.             if(Config -> MiscConfig -> ProtectiveMode && !Config -> TransferConfig -> OverridePath)
  1094.             {
  1095.                 STRPTR    Library    = NULL,
  1096.                     Path    = NULL;
  1097.  
  1098.                 if(Config -> TransferConfig -> DefaultType == XFER_XPR && Config -> TransferConfig -> DefaultLibrary[0])
  1099.                 {
  1100.                     Library    = Config -> TransferConfig -> DefaultLibrary;
  1101.                     Path    = Config -> PathConfig -> BinaryDownloadPath;
  1102.                 }
  1103.  
  1104.                 if(Config -> TransferConfig -> ASCIIDownloadType == XFER_XPR && Config -> TransferConfig -> ASCIIDownloadLibrary[0])
  1105.                 {
  1106.                     Library    = Config -> TransferConfig -> ASCIIDownloadLibrary;
  1107.                     Path    = Config -> PathConfig -> ASCIIDownloadPath;
  1108.                 }
  1109.  
  1110.                 if(Config -> TransferConfig -> TextDownloadType == XFER_XPR && Config -> TransferConfig -> TextDownloadLibrary[0])
  1111.                 {
  1112.                     Library    = Config -> TransferConfig -> TextDownloadLibrary;
  1113.                     Path    = Config -> PathConfig -> TextDownloadPath;
  1114.                 }
  1115.  
  1116.                 if(Config -> TransferConfig -> BinaryDownloadType == XFER_XPR && Config -> TransferConfig -> BinaryDownloadLibrary[0])
  1117.                 {
  1118.                     Library    = Config -> TransferConfig -> BinaryDownloadLibrary;
  1119.                     Path    = Config -> PathConfig -> BinaryDownloadPath;
  1120.                 }
  1121.  
  1122.                 if(Library && Path)
  1123.                 {
  1124.                     UBYTE LocalBuffer[MAX_FILENAME_LENGTH];
  1125.  
  1126.                     if(*Path == 0)
  1127.                     {
  1128.                         if(GetCurrentDirName(LocalBuffer,MAX_FILENAME_LENGTH))
  1129.                             Path = LocalBuffer;
  1130.                     }
  1131.  
  1132.                     if(MyEasyRequest(Window,LocaleString(MSG_XPR_PATH_TXT),LocaleString(MSG_GLOBAL_YES_NO_TXT),Library,Path))
  1133.                         Config -> TransferConfig -> OverridePath = TRUE;
  1134.                 }
  1135.             }
  1136.         }
  1137.  
  1138.         if(XProtocolBase)
  1139.             return((BYTE)memcmp(PrivateConfig -> TransferConfig,Config -> TransferConfig,sizeof(struct TransferSettings)));
  1140.         else
  1141.         {
  1142.             if(Config -> TransferConfig -> DefaultLibrary[0])
  1143.                 return(OpenIt);
  1144.             else
  1145.                 return((BYTE)memcmp(PrivateConfig -> TransferConfig,Config -> TransferConfig,sizeof(struct TransferSettings)));
  1146.         }
  1147.     }
  1148. }
  1149.